歡迎來到「30天用Python打造你的數位金融實力」系列的第15天!
今天我們終於要從「看市場」轉到「看自己」了。因為再多的技術指標、再厲害的投資策略,如果你連自己的交易紀錄都沒整理過,其實很難知道自己真正的投資表現。
我們今天要做的事情,就是用 Python 幫你自動化生成一份 盈虧報表 (P&L Report),快速回答幾個問題:
想像一下:
你在交易所下載了一份 交易紀錄 CSV,通常會長這樣:
日期 | 幣種 | 動作 | 價格 | 數量 | 手續費 |
---|---|---|---|---|---|
2025-08-01 | BTC | 買入 | 65000 | 0.01 | 5 |
2025-08-10 | BTC | 賣出 | 70000 | 0.01 | 5 |
2025-08-12 | ETH | 買入 | 3000 | 0.5 | 3 |
如果我們要手動算盈虧,會非常麻煩。
這時候 Python 就派上用場了!
import pandas as pd
# 讀取交易紀錄
df = pd.read_csv("trades.csv")
# 建立一個空的 DataFrame 來儲存計算後的報表
report = pd.DataFrame(columns=["幣種", "總買入", "總賣出", "手續費", "盈虧"])
# 按幣種統計盈虧
for coin, group in df.groupby("幣種"):
buy = (group[group["動作"] == "買入"]["價格"] * group[group["動作"] == "買入"]["數量"]).sum()
sell = (group[group["動作"] == "賣出"]["價格"] * group[group["動作"] == "賣出"]["數量"]).sum()
fee = group["手續費"].sum()
pnl = sell - buy - fee
report = report.append({
"幣種": coin,
"總買入": buy,
"總賣出": sell,
"手續費": fee,
"盈虧": pnl
}, ignore_index=True)
print(report)
幣種 | 總買入 | 總賣出 | 手續費 | 盈虧 |
---|---|---|---|---|
BTC | 650 | 700 | 5 | 45 |
ETH | 1500 | 0 | 3 | -1503 |
有了盈虧數據,我們可以用 matplotlib 畫出直條圖,更直覺地看到每個幣種的表現。
import matplotlib.pyplot as plt
plt.bar(report["幣種"], report["盈虧"])
plt.title("各幣種盈虧情況")
plt.ylabel("盈虧金額")
plt.show()